import request from "@/utils/request"

const PERMISSION_BASE_URL = "/api/object/com.siline.chimes/ChimesPermission"

class DeptAPI {
  /**
   * 获取权限分页列表
   *
   */
  static queryPage(data: QueryCondition = {}) {
    return request<any, ResponseData<PageResult<DeptVO[]>>>({
      method: "post",
      url: `${PERMISSION_BASE_URL}/paged_query`,
      data,
    })
  }
  /**
   * 获取权限列表
   *
   * @param data 查询参数（可选）
   */
  static query(data: QueryCondition = {}) {
    return request<any, ResponseData<DeptVO[]>>({
      method: "post",
      url: `${PERMISSION_BASE_URL}/query`,
      data,
    })
  }

  /**
   * 获取权限表单数据
   *
   * @param id 权限ID
   * @returns 权限表单数据
   */
  static getFormData(id: number) {
    return request<any, ResponseData<DeptForm>>({
      url: `${PERMISSION_BASE_URL}/select/${id}`,
      method: "get",
    })
  }

  /**
   * 新增权限
   *
   * @param data 权限表单数据
   * @returns 请求结果
   */
  static add(data: DeptForm) {
    return request({
      url: `${PERMISSION_BASE_URL}/insert`,
      method: "post",
      data: data,
    })
  }

  /**
   * 修改权限
   *
   * @param data 权限表单数据
   * @returns 请求结果
   */
  static update(data: DeptForm) {
    return request({
      url: `${PERMISSION_BASE_URL}/update`,
      method: "post",
      data: data,
    })
  }
  /**
   * 删除权限
   */
  static deleteById(data: DeptForm) {
    return request({
      url: `${PERMISSION_BASE_URL}/delete`,
      method: "post",
      data,
    })
  }
  /**
   * 删除权限
   */
  static deleteBy(data: QueryCondition) {
    return request({
      url: `${PERMISSION_BASE_URL}/delete_by`,
      method: "post",
      data,
    })
  }
}

export default DeptAPI

/** 权限查询参数 */
export interface DeptQuery {
  /** 搜索关键字 */
  keywords?: string
  /** 状态 */
  enabled?: number
}

/** 权限类型 */
export interface DeptVO {
  /** 子集 */
  children?: DeptVO[]
  /** 权限ID */
  dept_id?: number
  /** 权限名称 */
  name?: string
  /** 子权限数量 */
  sub_count?: number
  /** 父权限ID */
  pid?: number
  /** 排序 */
  dept_sort?: number
  /** 状态(1:启用；0:禁用) */
  enabled?: number
  /** 创建时间 */
  create_time?: Date
  /** 修改时间 */
  update_time?: Date
}

/** 权限表单类型 */
export interface DeptForm {
  /** 权限ID(新增不填) */
  dept_id?: number
  /** 权限名称 */
  name?: string
  /** 子权限数量 */
  sub_count?: number
  /** 父权限ID */
  pid?: number
  /** 排序 */
  dept_sort?: number
  /** 状态(1:启用；0：禁用) */
  enabled?: number
}
